package com.karst.webnotes.chapter04
{
	import flash.display.BitmapData;
	import flash.display.Shape;
	import flash.events.Event;
	
	import org.aswing.AsWingManager;
	import org.papervision3d.materials.BitmapMaterial;
	import org.papervision3d.objects.primitives.Plane;
	import org.papervision3d.view.BasicView;
	
	internal class BitmapMaterialExample extends BasicView
	{
		public function BitmapMaterialExample()
		{
			super() ;
			AsWingManager.getStage().frameRate = 24 ;
			createView() ;
			startRendering() ;
		}
		
		private var material : BitmapMaterial = null ;
		private var plane : Plane = null ;
		private function createView() : void
		{
			
			if( material == null )
			{
				/*1. 通过graphics的绘圆方法drawCircle创建圆形,起始绘制坐标（圆心）x，y，半径，
				此时圆心的坐标是相对于父对象原点的。半径有可能超出父对象的范围 */
				var circle : Shape = new Shape() ;
				circle.graphics.beginFill( 0xFF0000 ) ;
				circle.graphics.drawCircle( 0,0, 50 ) ;
				circle.graphics.endFill() ;
				
				//2. 在bmp内绘制circle。即bmp作为了circle的父对象。在flash里对象原点位于左上角。
				//bmp的宽高将决定circle是否会过大或偏移
				var bmp : BitmapData = new BitmapData( 100, 100, false, 0xFFEE00 ) ;
				bmp.draw( circle ) ;
				
				material = new BitmapMaterial( bmp ) ;
				//3. 创建使用bmp的位图材质,此材质大小颜色等由bmp决定
				material.doubleSided = true ;
			}
			
			//4. 创建使用位图材质material的平面，无论材质自身的大小，将被拉伸到与plane等同
			if( plane == null )
				plane = new Plane( material, 300, 300, 1, 1 ) ;
			plane.x = 0 ;
			plane.y = 0 ;
			scene.addChild( plane ) ;
		}
		
		override protected function onRenderTick( event : Event = null ) : void
		{
			super.onRenderTick( event ) ;
			plane.localRotationY-- ;
		}
	}
}